Embodiments of the present invention relate to congestion control, and more particularly to techniques for controlling congestion in a network device based upon information stored by the network device for one or more data sources.
The trend towards higher bandwidth and lower latency data transmissions has necessitated low latency switching architectures that utilize fast cut-through data forwarding techniques and have very low storage memory. There is also a convergence trend to using Ethernet which has placed additional requirements on the network devices responsible for data forwarding (e.g., switches, routers) in terms of flow control and lossless operation. For example, porting Fiber Channel transmissions over to Ethernet requires lossless data transmissions while using forwarding devices with reduced memory resources.
Lossless or even reduced-loss data transmissions depend upon efficient congestion control techniques in network devices. Several congestion control solutions are presently being debated in networking forums, with regards to congestion control in order to enforce, for example, lossless behavior of the Ethernet network. Examples include Backward Congestion Notification (BCN) and Quantized Congestion Notification (QCN). Conventional solutions rely on detecting a congestion point in the network and performing congestion control based upon doing a “sampling” of the packets queued in a switching device where the congestion is experienced. As a result of the sampling, a “guess” is made as to which sender of data or data source is causing the congestion—this is done regardless of whether the data source is the actual culprit or not. A congestion control procedure is then initiated for the randomly selected data source(s). While conventional congestion control procedures differ on the timing algorithm of the flow or congestion control procedures, they all however share the fact of guessing which data source is causing the congestion.
In general, upon detecting congestion in a network device, all of the conventional flow or congestion control approaches use statistical sampling of the received packets to send flow or congestion control messages. Since the identification of the data sources is based upon sampling and not on actual usage, conventional techniques can potentially take longer to converge and can actually slow compliant traffic while leaving non-compliant traffic untouched.